<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>原型及原型链</title>
    <script>

        //原型是一个对象，其他的对象都可以通过原型实现属性继承，但是除了prototype
        var arr = [1,2,3];
        var obj = {};
        var func = function(){};
        console.dir(arr)
        console.dir(obj)
        console.dir(func)//只有函数有prototype
        console.dir(func.__proto__)

        //__proto__的三种指向
        //__proto__的指向取决于对象创建时的实现方式
        //字面量方法
        // var a = {}
        // console.log(a.__proto__ === a.constructor.prototype)//true
        // console.log(a.__proto__)

        //构造器方法
        // var A = function(){}
        // var b = new A()
        // console.log(b.__proto__ === b.constructor.prototype)//true
        // console.log(b.__proto__ === A.prototype)//true

        //Object.create 方式
        // var c = {}
        // var a = Object.create(c)
        // console.log(a.__proto__ === c)//ture 
        // console.log(a.__proto__ === a.constructor.prototype)//false   多数情况下对象的原型的指向其构造器的原型，除了Object.create 方式
    </script>
</head>
<body>
    
</body>
</html>